home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Resources / System / BoingBag1 / Contributions / InstallerNG / GUI-API / example / igui_Welcome.c < prev    next >
C/C++ Source or Header  |  1999-10-31  |  12KB  |  271 lines

  1.  
  2. #include "includes.h"
  3. #include "installergui_data.h"
  4.  
  5. /********************************************************************
  6.  *
  7.  *  DESCRIPTION
  8.  *
  9.  *  a very complex one :)
  10.  *  this handles both WELCOME panels, stores the user-selected
  11.  *  data (such as LOGFILE, USERMODE, PRETEND...) into the
  12.  *  applications global environment (app->app_GlobalEnv)
  13.  *
  14.  *  IN:  application - pointer to the private application structure
  15.  *       appname - the name of the application (i.e. the content
  16.  *                 of the @APPNAME variable)
  17.  *  OUT: -
  18.  */
  19.  
  20. /********************************************************************
  21.  *
  22.  *  STATIC
  23.  *
  24.  */
  25.  
  26. static APTR make_intro1(APTR, char *);
  27. static APTR make_intro2(APTR);
  28.  
  29. static const struct Hook welcome_MXTwoHook = { { NULL, NULL }, (VOID *) guistuff_MXTwoFun, NULL, NULL };
  30. static const struct Hook welcome_MXThreeHook = { { NULL, NULL }, (VOID *) guistuff_MXThreeFun, NULL, NULL };
  31. static const struct Hook welcome_MXFourHook = { { NULL, NULL }, (VOID *) guistuff_MXFourFun, NULL, NULL };
  32. static const struct Hook welcome_SetValHook = { { NULL, NULL }, (VOID *) guistuff_SetValFun, NULL, NULL };
  33.  
  34. /********************************************************************
  35.  *
  36.  *  EXTERN
  37.  *
  38.  */
  39.  
  40. /********************************************************************
  41.  *
  42.  *  PUBLIC
  43.  *
  44.  */
  45.  
  46. /********************************************************************
  47.  *
  48.  *  CODE
  49.  *
  50.  */
  51.  
  52. void __asm igui_Welcome(register __a0 APTR application, register __a1 char *appname)
  53. {
  54.   #ifdef DEBUG
  55.   DEBUG_MAKRO
  56.   #endif
  57.  
  58.   {
  59.     struct Application *app = (struct Application *) application;
  60.  
  61.     // set the help text
  62.     igui_SetHelp(app, app->app_Texts[HELP_INTRO1]);
  63.  
  64.     // make a new panel an display it
  65.     if (!guistuff_NewContent(app, make_intro1(app, appname))) { app->app_Error = GUIERROR_NO_GUI_OBJECT; return; }
  66.  
  67.     // wait for user input
  68.     igui_WaitApp(app);
  69.     if (!igui_QuitApp(app))
  70.     {
  71.       // only if the selected user is AVERAGE or EXPERT, we have to set up
  72.       // the second panel
  73.       if (app->app_GlobalEnv[GENV_USER] != USER_NOVICE)
  74.       {
  75.         if (!guistuff_NewContent(app, make_intro2(app))) { app->app_Error = GUIERROR_NO_GUI_OBJECT; return; }
  76.         igui_SetHelp(app, app->app_Texts[HELP_INTRO2]);
  77.         igui_WaitApp(app);
  78.       }
  79.     }
  80.  
  81.     igui_EmptyPanel(app);
  82.     return;
  83.   }
  84. }
  85.  
  86. /********************************************************************/
  87.  
  88. // create the panel for the first intro
  89. static APTR make_intro1(APTR application, char *appname)
  90. {
  91.   struct Application *app = (struct Application *) application;
  92.  
  93.   char *welcometext;
  94.   APTR IM_novice, IM_average, IM_expert,
  95.        obj = NULL;
  96.  
  97.   // create the welcome text
  98.   welcometext = sav_StringF2(app->app_Texts[INTRO1_WELCOME], &appname);
  99.   if (!welcometext) { }
  100.   else
  101.   {
  102.     obj = GroupObject,
  103.                   Child, TextObject,
  104.                     MUIA_Frame, MUIV_Frame_None,
  105.                     MUIA_Text_Contents, welcometext,
  106.                     MUIA_Text_SetMin, TRUE,
  107.                     MUIA_Text_PreParse, "\33c",
  108.                   End,
  109.                   Child, HVSpace,
  110.                   Child, GroupObject,
  111.                     MUIA_Frame, MUIV_Frame_Group,
  112.                     MUIA_FrameTitle, app->app_Texts[INTRO1_MODE],
  113.                     MUIA_Group_Horiz, TRUE,
  114.                     Child, HVSpace,
  115.                     Child, GroupObject,
  116.                       MUIA_Group_Columns, 2,
  117.                       Child, IM_novice = guistuff_InitRadio((app->app_GlobalEnv[GENV_DEFUSER]==USER_NOVICE)?TRUE:FALSE,
  118.                                                        (app->app_GlobalEnv[GENV_MINUSER]>USER_NOVICE)?TRUE:FALSE),
  119.                       Child, LLabel(app->app_Texts[INTRO1_NOVICE]),
  120.                       Child, IM_average = guistuff_InitRadio((app->app_GlobalEnv[GENV_DEFUSER]==USER_AVERAGE)?TRUE:FALSE,
  121.                                                         (app->app_GlobalEnv[GENV_MINUSER]>USER_AVERAGE)?TRUE:FALSE),
  122.                       Child, LLabel(app->app_Texts[INTRO1_AVERAGE]),
  123.                       Child, IM_expert = guistuff_InitRadio((app->app_GlobalEnv[GENV_DEFUSER]==USER_EXPERT)?TRUE:FALSE,
  124.                                                        FALSE),
  125.                       Child, LLabel(app->app_Texts[INTRO1_EXPERT]),
  126.                     End,
  127.                     Child, HVSpace,
  128.                   End,
  129.                   Child, HVSpace,
  130.                 End;
  131.  
  132.     if (obj)
  133.     {
  134.       DoMethod(IM_novice, MUIM_Notify, MUIA_Pressed, TRUE,
  135.                MUIV_Notify_Self, 5, MUIM_CallHook, &welcome_MXThreeHook, IM_novice, IM_average, IM_expert);
  136.       DoMethod(IM_average, MUIM_Notify, MUIA_Pressed, TRUE,
  137.                MUIV_Notify_Self, 5, MUIM_CallHook, &welcome_MXThreeHook, IM_average, IM_novice, IM_expert);
  138.       DoMethod(IM_expert, MUIM_Notify, MUIA_Pressed, TRUE,
  139.                MUIV_Notify_Self, 5, MUIM_CallHook, &welcome_MXThreeHook, IM_expert, IM_novice, IM_average);
  140.  
  141.       DoMethod(IM_novice, MUIM_Notify, MUIA_Pressed, TRUE,
  142.                MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_USER]), USER_NOVICE);
  143.       DoMethod(IM_average, MUIM_Notify, MUIA_Pressed, TRUE,
  144.                MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_USER]), USER_AVERAGE);
  145.       DoMethod(IM_expert, MUIM_Notify, MUIA_Pressed, TRUE,
  146.                MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_USER]), USER_EXPERT);
  147.     }
  148.   }
  149.  
  150.   return(obj);
  151. }
  152.  
  153. /********************************************************************/
  154.  
  155. static APTR make_intro2(APTR application)
  156. {
  157.   struct Application *app = (struct Application *) application;
  158.  
  159.   APTR IM_pretend, IM_real, IM_printer, IM_file, IM_nolog, IM_console;
  160.   APTR CM_debug, CM_startup, CM_uninstall, CM_dontdelsysdir, CM_packagecomment, CM_alwaysconfirm;
  161.   APTR obj;
  162.  
  163.   obj = GroupObject,
  164.           Child, GroupObject,
  165.             MUIA_Frame, MUIV_Frame_Group,
  166.             MUIA_FrameTitle, app->app_Texts[INTRO2_OPTS],
  167.             MUIA_Group_Horiz, TRUE,
  168.             Child, HVSpace,
  169.             Child, GroupObject,
  170.               MUIA_Group_Columns, 2,
  171.               Child, IM_real = guistuff_InitRadio(TRUE, FALSE),
  172.               Child, LLabel(app->app_Texts[INTRO2_REAL]),
  173.               Child, IM_pretend = guistuff_InitRadio(FALSE, !(app->app_GlobalEnv[GENV_ALLOW_PRETEND])),
  174.               Child, LLabel(app->app_Texts[INTRO2_PRETEND]),
  175.             End,
  176.             Child, HVSpace,
  177.           End,
  178.           Child, HVSpace,
  179.           Child, GroupObject,
  180.             MUIA_Frame, MUIV_Frame_Group,
  181.             MUIA_FrameTitle, app->app_Texts[INTRO2_LOG],
  182.             MUIA_Group_Horiz, TRUE,
  183.             Child, HVSpace,
  184.             Child, GroupObject,
  185.               MUIA_Group_Columns, 2,
  186.               Child, IM_printer = guistuff_InitRadio(FALSE, !(app->app_GlobalEnv[GENV_ALLOW_PRINT])),
  187.               Child, LLabel(app->app_Texts[INTRO2_PRINTER]),
  188.               Child, IM_file = guistuff_InitRadio(FALSE, !(app->app_GlobalEnv[GENV_ALLOW_LOG])),
  189.               Child, LLabel(app->app_Texts[INTRO2_FILE]),
  190.               Child, IM_console = guistuff_InitRadio(FALSE, FALSE),
  191.               Child, LLabel(app->app_Texts[INTRO2_CONSOLE]),
  192.               Child, IM_nolog = guistuff_InitRadio(TRUE, FALSE),
  193.               Child, LLabel(app->app_Texts[INTRO2_NONE]),
  194.             End,
  195.             Child, HVSpace,
  196.           End,
  197.           Child, HVSpace,
  198.           Child, GroupObject,
  199.             MUIA_Frame, MUIV_Frame_Group,
  200.             MUIA_FrameTitle, app->app_Texts[INTRO2_ADVANCED],
  201.             MUIA_Group_Horiz, TRUE,
  202.             Child, HVSpace,
  203.             Child, GroupObject,
  204.               MUIA_Group_Columns, 4,
  205.                 Child, Label(app->app_Texts[INTRO2_DEBUG]),
  206.                 Child, CM_debug = CheckMark(app->app_GlobalEnv[GENV_DEBUGMODE]),
  207.                 Child, Label(app->app_Texts[INTRO2_NOSTARTUPSEQUENCE]),
  208.                 Child, CM_startup = CheckMark(app->app_GlobalEnv[GENV_STARTUP]),
  209.                 Child, Label(app->app_Texts[INTRO2_UNINSTALL]),
  210.                 Child, CM_uninstall = CheckMark(app->app_GlobalEnv[GENV_UNINSTALL]),
  211.                 Child, Label(app->app_Texts[INTRO2_DONTDELFROMSYSDIRS]),
  212.                 Child, CM_dontdelsysdir = CheckMark(app->app_GlobalEnv[GENV_DONTDELFROMSYSDIRS]),
  213.                 Child, Label(app->app_Texts[INTRO2_PACKAGE_COMMENT]),
  214.                 Child, CM_packagecomment = CheckMark(app->app_GlobalEnv[GENV_PACKAGE_COMMENT]),
  215.                 Child, Label(app->app_Texts[INTRO2_ALWAYSCONFIRM]),
  216.                 Child, CM_alwaysconfirm = CheckMark(app->app_GlobalEnv[GENV_ALWAYSCONFIRM]),
  217.             End,
  218.             Child, HVSpace,
  219.           End,
  220.           Child, HVSpace,
  221.         End;
  222.  
  223.   if (obj)
  224.   {
  225.     // mx
  226.     DoMethod(IM_real, MUIM_Notify, MUIA_Pressed, TRUE,
  227.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_MXTwoHook, IM_real, IM_pretend);
  228.     DoMethod(IM_pretend, MUIM_Notify, MUIA_Pressed, TRUE,
  229.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_MXTwoHook, IM_pretend, IM_real);
  230.  
  231.     DoMethod(IM_real, MUIM_Notify, MUIA_Pressed, TRUE,
  232.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_INSTALL]), INSTALL_FOR_REAL);
  233.     DoMethod(IM_pretend, MUIM_Notify, MUIA_Pressed, TRUE,
  234.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_INSTALL]), INSTALL_PRETEND);
  235.  
  236.     DoMethod(IM_printer, MUIM_Notify, MUIA_Pressed, TRUE,
  237.              MUIV_Notify_Self, 6, MUIM_CallHook, &welcome_MXFourHook, IM_printer, IM_file, IM_console, IM_nolog);
  238.     DoMethod(IM_file, MUIM_Notify, MUIA_Pressed, TRUE,
  239.              MUIV_Notify_Self, 6, MUIM_CallHook, &welcome_MXFourHook, IM_file, IM_printer, IM_console, IM_nolog);
  240.     DoMethod(IM_console, MUIM_Notify, MUIA_Pressed, TRUE,
  241.              MUIV_Notify_Self, 6, MUIM_CallHook, &welcome_MXFourHook, IM_console, IM_file, IM_printer, IM_nolog);
  242.     DoMethod(IM_nolog, MUIM_Notify, MUIA_Pressed, TRUE,
  243.              MUIV_Notify_Self, 6, MUIM_CallHook, &welcome_MXFourHook, IM_nolog, IM_file, IM_console, IM_printer);
  244.  
  245.     DoMethod(IM_printer, MUIM_Notify, MUIA_Pressed, TRUE,
  246.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_LOG]), LOG_PRINTER);
  247.     DoMethod(IM_file, MUIM_Notify, MUIA_Pressed, TRUE,
  248.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_LOG]), LOG_FILE);
  249.     DoMethod(IM_console, MUIM_Notify, MUIA_Pressed, TRUE,
  250.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_LOG]), LOG_CONSOLE);
  251.     DoMethod(IM_nolog, MUIM_Notify, MUIA_Pressed, TRUE,
  252.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_LOG]), LOG_NOLOG);
  253.  
  254.     // checkmarks
  255.     DoMethod(CM_uninstall, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
  256.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_UNINSTALL]), !(app->app_GlobalEnv[GENV_UNINSTALL]));
  257.     DoMethod(CM_startup, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
  258.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_STARTUP]), !(app->app_GlobalEnv[GENV_STARTUP]));
  259.     DoMethod(CM_debug, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
  260.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_DEBUGMODE]), !(app->app_GlobalEnv[GENV_DEBUGMODE]));
  261.     DoMethod(CM_packagecomment, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
  262.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_PACKAGE_COMMENT]), !(app->app_GlobalEnv[GENV_PACKAGE_COMMENT]));
  263.     DoMethod(CM_alwaysconfirm, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
  264.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_ALWAYSCONFIRM]), !(app->app_GlobalEnv[GENV_ALWAYSCONFIRM]));
  265.     DoMethod(CM_dontdelsysdir, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
  266.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_DONTDELFROMSYSDIRS]), !(app->app_GlobalEnv[GENV_DONTDELFROMSYSDIRS]));
  267.   }
  268.  
  269.   return(obj);
  270. }
  271.